home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / SDKs / Now Utilities Plug Ins 6.0 / API Stuff / Now Tabs Plug Ins ƒ / Restart Plug In ƒ / Main.c next >
Encoding:
C/C++ Source or Header  |  1996-03-06  |  2.8 KB  |  129 lines  |  [TEXT/KAHL]

  1. // Restart Plug In for Now Utilities 6.0
  2. // © Now Software, Inc.
  3. // 
  4. // written by hac
  5. // 3/4/96
  6. //
  7. // This module installs three grouped menu items in the Now Tabs popup:
  8. //   - Restart
  9. //   - Shutdown
  10. //   - Sleep (Powerbook only)
  11.  
  12.  
  13.  
  14. #include "Main.h"
  15. #include "ShutDown.h"
  16. #include "Power.h"
  17.  
  18. #define        kRestart    2
  19. #define        kShutdown    3
  20. #define        kSleep        4
  21.  
  22. pascal void main(PlugInInformation *plugInInformation)
  23. {
  24.     plugInInformation->version = kPlugInInformationVersionOne;
  25.     plugInInformation->plugInType = kRestartPlugInType;
  26.     plugInInformation->PrepareMenu = &PrepareMenu;
  27.     plugInInformation->HandleMenuItemSelected = &HandleMenuItemSelected;
  28. }
  29.  
  30. pascal void PrepareMenu(InstantAccessInformation *information, short asPreview)
  31. {
  32.     MenuSelectResultStructure            mrs;
  33.  
  34.     MenuItemInformation    menuItem;    
  35.     
  36.     // add a divider line above
  37.     menuItem.version = kMenuItemInformationVersionOne;
  38.     menuItem.classification = kMiscellaneousClassification;
  39.     menuItem.type = kDividerMenuItemType;
  40.     menuItem.id = 1;
  41.     menuItem.enabled = false;
  42.     menuItem.style = 0;
  43.     menuItem.mark = 0;
  44.     menuItem.hasSubMenu = FALSE;
  45.     menuItem.subMenu = nil;
  46.     menuItem.refCon = 0;
  47.     menuItem.owningPlugInType = kRestartPlugInType;
  48.     
  49.     (*information->AddMenuItem)(&menuItem);
  50.  
  51.     // add the restart menu item        
  52.  
  53.     BlockMove("\pRestart", menuItem.text, kMenuItemTextSize);
  54.  
  55.     menuItem.type = kTextMenuItemType;
  56.     menuItem.id = 2;
  57.     menuItem.enabled = true;
  58.     
  59.     (*information->AddMenuItem)(&menuItem);
  60.  
  61.     // add the shutdown menu item        
  62.  
  63.     BlockMove("\pShutdown", menuItem.text, kMenuItemTextSize);
  64.  
  65.     menuItem.type = kTextMenuItemType;
  66.     menuItem.id = 3;
  67.     menuItem.enabled = true;
  68.     
  69.     (*information->AddMenuItem)(&menuItem);
  70.  
  71.     // add the sleep menu item        
  72.  
  73.     mrs = (*information->FindMenuItem)("\pSpecial", "\pSleep");
  74.     if ((mrs.wordResult.menuID != 0) && (mrs.wordResult.itemNumber != 0)) {
  75.         BlockMove("\pSleep", menuItem.text, kMenuItemTextSize);
  76.  
  77.         menuItem.type = kTextMenuItemType;
  78.         menuItem.id = 4;
  79.         menuItem.enabled = true;
  80.     
  81.         (*information->AddMenuItem)(&menuItem);
  82.     } else {
  83.         Str15    tempStr;
  84.  
  85.         NumToString(mrs.wordResult.menuID, tempStr);
  86.         //DebugStr(tempStr);
  87.         
  88.         NumToString(mrs.wordResult.itemNumber, tempStr);
  89.         //DebugStr(tempStr);
  90.     }
  91.  
  92.  
  93.  
  94.     // add a divider line below
  95.     menuItem.type = kDividerMenuItemType;
  96.     menuItem.id = 5;
  97.     menuItem.enabled = false;
  98.     
  99.     (*information->AddMenuItem)(&menuItem);
  100. }
  101.  
  102. pascal void CleanUpAfterMenuSelect(InstantAccessInformation *information, short asPreview)
  103. {
  104.     //hmmmm....
  105. }
  106.  
  107. pascal void HandleMenuItemSelected(InstantAccessInformation *information, MenuItemInformation *menuItem)
  108. {
  109.     switch (menuItem->id) {
  110.         
  111.         case kRestart:
  112.             ShutDwnStart();
  113.             break;
  114.  
  115.         case kShutdown:
  116.             ShutDwnPower();
  117.             break;
  118.  
  119.         case kSleep:
  120.             (*information->SelectFinderMenuItem)("\pSpecial", "\pSleep");
  121.             break;
  122.  
  123.         otherwise:
  124.             break;
  125.  
  126.     }
  127.  
  128. }
  129.